<?php
/**
 * WebserviceController
 *
 * Point d'entrée des services
 * Appel du service web permettant de
 * gerer les réservations à distance.
 * 
 * @package application
 * @subpackage controllers
 */
class WebserviceController extends Zend_Controller_Action
{
    /**
     * Serveur du webservice demandé
     * 
     * @var object
     */
    protected $_server;
    
    /**
     * Initialisation du contrôleur
     */
    public function init()
    {
        $this->_helper->viewRenderer->setNoRender(true);
        $this->_helper->layout->disableLayout();
        $this->getResponse()->setHeader('Content-type', 'text/xml');
    }
    
    /**
     * Service SOAP
     */
    public function soapAction()
    {
        $this->_server = new Zend_Soap_Server(null, array('uri' => 'http://reservation'));
    }
    
    /**
     * Service REST
     */
    public function restAction()
    {
        $this->_server = new Zend_Rest_Server();
    }
    
    /**
     * Flux RSS
     */
    public function rssAction()
    {
        $this->_server = new Zfbook_Feed();
    }
    
    /**
     * Postdispatch : lancé après chaque action
     * Lance le service web demandé
     */
    public function postDispatch()
    {
        $this->_server->setClass('Zfbook_Reservation_' . ucfirst($this->getRequest()->getActionName()) . 'Server');
        $this->_server->handle();
    }
}
